/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * monaco-languages version: 0.9.0(e162b4ba29044167bc7181c42b3270fa8a467424)
 * Released under the MIT license
 * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
 *-----------------------------------------------------------------------------*/
define('vs/basic-languages/src/css', ['require', 'exports'], function(e, t) {
  'use strict';
  Object.defineProperty(t, '__esModule', { value: !0 }),
    (t.conf = {
      wordPattern: /(#?-?\d*\.\d\w*%?)|((::|[@#.!:])?[\w-?]+%?)|::|[@#.!:]/g,
      comments: { blockComment: ['/*', '*/'] },
      brackets: [['{', '}'], ['[', ']'], ['(', ')']],
      autoClosingPairs: [
        { open: '{', close: '}', notIn: ['string', 'comment'] },
        { open: '[', close: ']', notIn: ['string', 'comment'] },
        { open: '(', close: ')', notIn: ['string', 'comment'] },
        { open: '"', close: '"', notIn: ['string', 'comment'] },
        { open: "'", close: "'", notIn: ['string', 'comment'] },
      ],
      surroundingPairs: [
        { open: '{', close: '}' },
        { open: '[', close: ']' },
        { open: '(', close: ')' },
        { open: '"', close: '"' },
        { open: "'", close: "'" },
      ],
    }),
    (t.language = {
      defaultToken: '',
      tokenPostfix: '.css',
      ws: '[ \t\n\r\f]*',
      identifier:
        '-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*',
      brackets: [
        { open: '{', close: '}', token: 'delimiter.bracket' },
        { open: '[', close: ']', token: 'delimiter.bracket' },
        { open: '(', close: ')', token: 'delimiter.parenthesis' },
        { open: '<', close: '>', token: 'delimiter.angle' },
      ],
      tokenizer: {
        root: [{ include: '@selector' }],
        selector: [
          { include: '@comments' },
          { include: '@import' },
          { include: '@strings' },
          [
            '[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)',
            { token: 'keyword', next: '@keyframedeclaration' },
          ],
          ['[@](page|content|font-face|-moz-document)', { token: 'keyword' }],
          ['[@](charset|namespace)', { token: 'keyword', next: '@declarationbody' }],
          [
            '(url-prefix)(\\()',
            ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }],
          ],
          [
            '(url)(\\()',
            ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }],
          ],
          { include: '@selectorname' },
          ['[\\*]', 'tag'],
          ['[>\\+,]', 'delimiter'],
          ['\\[', { token: 'delimiter.bracket', next: '@selectorattribute' }],
          ['{', { token: 'delimiter.bracket', next: '@selectorbody' }],
        ],
        selectorbody: [
          { include: '@comments' },
          ['[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))', 'attribute.name', '@rulevalue'],
          ['}', { token: 'delimiter.bracket', next: '@pop' }],
        ],
        selectorname: [['(\\.|#(?=[^{])|%|(@identifier)|:)+', 'tag']],
        selectorattribute: [
          { include: '@term' },
          [']', { token: 'delimiter.bracket', next: '@pop' }],
        ],
        term: [
          { include: '@comments' },
          [
            '(url-prefix)(\\()',
            ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }],
          ],
          [
            '(url)(\\()',
            ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }],
          ],
          { include: '@functioninvocation' },
          { include: '@numbers' },
          { include: '@name' },
          ['([<>=\\+\\-\\*\\/\\^\\|\\~,])', 'delimiter'],
          [',', 'delimiter'],
        ],
        rulevalue: [
          { include: '@comments' },
          { include: '@strings' },
          { include: '@term' },
          ['!important', 'keyword'],
          [';', 'delimiter', '@pop'],
          ['(?=})', { token: '', next: '@pop' }],
        ],
        warndebug: [['[@](warn|debug)', { token: 'keyword', next: '@declarationbody' }]],
        import: [['[@](import)', { token: 'keyword', next: '@declarationbody' }]],
        urldeclaration: [
          { include: '@strings' },
          ['[^)\r\n]+', 'string'],
          ['\\)', { token: 'delimiter.parenthesis', next: '@pop' }],
        ],
        parenthizedterm: [
          { include: '@term' },
          ['\\)', { token: 'delimiter.parenthesis', next: '@pop' }],
        ],
        declarationbody: [
          { include: '@term' },
          [';', 'delimiter', '@pop'],
          ['(?=})', { token: '', next: '@pop' }],
        ],
        comments: [['\\/\\*', 'comment', '@comment'], ['\\/\\/+.*', 'comment']],
        comment: [['\\*\\/', 'comment', '@pop'], [/[^*/]+/, 'comment'], [/./, 'comment']],
        name: [['@identifier', 'attribute.value']],
        numbers: [
          [
            '-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?',
            { token: 'attribute.value.number', next: '@units' },
          ],
          ['#[0-9a-fA-F_]+(?!\\w)', 'attribute.value.hex'],
        ],
        units: [
          [
            '(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?',
            'attribute.value.unit',
            '@pop',
          ],
        ],
        keyframedeclaration: [
          ['@identifier', 'attribute.value'],
          ['{', { token: 'delimiter.bracket', switchTo: '@keyframebody' }],
        ],
        keyframebody: [
          { include: '@term' },
          ['{', { token: 'delimiter.bracket', next: '@selectorbody' }],
          ['}', { token: 'delimiter.bracket', next: '@pop' }],
        ],
        functioninvocation: [
          ['@identifier\\(', { token: 'attribute.value', next: '@functionarguments' }],
        ],
        functionarguments: [
          ['\\$@identifier@ws:', 'attribute.name'],
          ['[,]', 'delimiter'],
          { include: '@term' },
          ['\\)', { token: 'attribute.value', next: '@pop' }],
        ],
        strings: [
          ['~?"', { token: 'string', next: '@stringenddoublequote' }],
          ["~?'", { token: 'string', next: '@stringendquote' }],
        ],
        stringenddoublequote: [
          ['\\\\.', 'string'],
          ['"', { token: 'string', next: '@pop' }],
          [/[^\\"]+/, 'string'],
          ['.', 'string'],
        ],
        stringendquote: [
          ['\\\\.', 'string'],
          ["'", { token: 'string', next: '@pop' }],
          [/[^\\']+/, 'string'],
          ['.', 'string'],
        ],
      },
    });
});
